#include<iostream>
#include<cstring>
using namespace std;
int next[100005];
char p[100005],q[100005],temp[100005];
char table[27];
void get_next(char *t){
     int tlen=strlen(t);
     next[0]=-1;
     int i=0,j=-1;
     while(i<tlen){
          if(j==-1 || t[i]==t[j]){
               i++;
               j++;
               next[i]=j;
          }
          else
               j=next[j];
     }
}
int kmp(char *s,char *t){
    get_next(t);
    int slen=strlen(s),tlen=strlen(t);
    int i=0,j=0;
    while(i<slen && j<tlen){
         if(j==-1 || s[i]==t[j]){
              i++;
              j++;
              if(i==slen)
                  return j;
         }
         else
              j=next[j];
    }
    return 0;
}
int main(){
    int Case;
    scanf("%d",&Case);
    while(Case--){
         scanf("%s%s",p,q);
         for(int i=0;p[i];i++)
             table[p[i]-'a']='a'+i;
         strcpy(p,q);
         for(int i=0;q[i];i++)
             q[i]=table[q[i]-'a'];
         int len=strlen(p);
         strcpy(temp,p+(len+1)/2);
         int x=kmp(temp,q);
         printf("%s",p);
         for(int i=x;i<len-x;i++)
             printf("%c",q[i]);
         puts("");
    }
    return 0;
}
